package com.lekang.system.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.lekang.common.annotation.Excel;
import com.lekang.common.core.domain.BaseEntity;

/**
 * 待办单据（存储入住、退住、请假等待办事项）对象 todo_task
 * 
 * @author zhihao
 * @date 2025-10-16
 */
public class TodoTask extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 单据编号（如RZ-入住、TZ-退住、QJ-请假） */
    @Excel(name = "单据编号", readConverterExp = "如=RZ-入住、TZ-退住、QJ-请假")
    private String taskNo;

    /** 单据标题（如“高启强的入住申请”） */
    @Excel(name = "单据标题", readConverterExp = "如=“高启强的入住申请”")
    private String taskTitle;

    /** 单据类别（入住、退住、请假） */
    @Excel(name = "单据类别", readConverterExp = "入=住、退住、请假")
    private String todoType;

    /** 申请人ID（关联sys_user表id） */
    @Excel(name = "申请人ID", readConverterExp = "关=联sys_user表id")
    private Long applicantId;

    /** 申请人姓名 */
    @Excel(name = "申请人姓名")
    private String applicantName;

    /** 老人ID（关联elderly表id） */
    @Excel(name = "老人ID", readConverterExp = "关=联elderly表id")
    private Long elderlyId;

    /** 老人姓名 */
    @Excel(name = "老人姓名")
    private String elderlyName;

    /** 申请时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date applyTime;

    /** 完成时间（未完成则为NULL） */
    @Excel(name = "完成时间", readConverterExp = "未=完成则为NULL")
    private Date completeTime;

    /** 流程状态（申请中、已完成、已关闭） */
    @Excel(name = "流程状态", readConverterExp = "申=请中、已完成、已关闭")
    private String processStatus;

    /** 待办提醒时间（可选） */
    @Excel(name = "待办提醒时间", readConverterExp = "可=选")
    private Date reminderTime;

    /** 逻辑删除（0-未删除，1-已删除） */
    @Excel(name = "逻辑删除", readConverterExp = "0=-未删除，1-已删除")
    private Long isDeleted;

    /** 额外字段1（预留扩展） */
    @Excel(name = "额外字段1", readConverterExp = "预=留扩展")
    private String extraField1;

    /** 额外字段2（预留扩展） */
    @Excel(name = "额外字段2", readConverterExp = "预=留扩展")
    private String extraField2;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setTaskNo(String taskNo) 
    {
        this.taskNo = taskNo;
    }

    public String getTaskNo() 
    {
        return taskNo;
    }

    public void setTaskTitle(String taskTitle) 
    {
        this.taskTitle = taskTitle;
    }

    public String getTaskTitle() 
    {
        return taskTitle;
    }

    public void setTodoType(String todoType) 
    {
        this.todoType = todoType;
    }

    public String getTodoType() 
    {
        return todoType;
    }

    public void setApplicantId(Long applicantId) 
    {
        this.applicantId = applicantId;
    }

    public Long getApplicantId() 
    {
        return applicantId;
    }

    public void setApplicantName(String applicantName) 
    {
        this.applicantName = applicantName;
    }

    public String getApplicantName() 
    {
        return applicantName;
    }

    public void setElderlyId(Long elderlyId) 
    {
        this.elderlyId = elderlyId;
    }

    public Long getElderlyId() 
    {
        return elderlyId;
    }

    public void setElderlyName(String elderlyName) 
    {
        this.elderlyName = elderlyName;
    }

    public String getElderlyName() 
    {
        return elderlyName;
    }

    public void setApplyTime(Date applyTime) 
    {
        this.applyTime = applyTime;
    }

    public Date getApplyTime() 
    {
        return applyTime;
    }

    public void setCompleteTime(Date completeTime) 
    {
        this.completeTime = completeTime;
    }

    public Date getCompleteTime() 
    {
        return completeTime;
    }

    public void setProcessStatus(String processStatus) 
    {
        this.processStatus = processStatus;
    }

    public String getProcessStatus() 
    {
        return processStatus;
    }

    public void setReminderTime(Date reminderTime) 
    {
        this.reminderTime = reminderTime;
    }

    public Date getReminderTime() 
    {
        return reminderTime;
    }

    public void setIsDeleted(Long isDeleted) 
    {
        this.isDeleted = isDeleted;
    }

    public Long getIsDeleted() 
    {
        return isDeleted;
    }

    public void setExtraField1(String extraField1) 
    {
        this.extraField1 = extraField1;
    }

    public String getExtraField1() 
    {
        return extraField1;
    }

    public void setExtraField2(String extraField2) 
    {
        this.extraField2 = extraField2;
    }

    public String getExtraField2() 
    {
        return extraField2;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("taskNo", getTaskNo())
            .append("taskTitle", getTaskTitle())
            .append("todoType", getTodoType())
            .append("applicantId", getApplicantId())
            .append("applicantName", getApplicantName())
            .append("elderlyId", getElderlyId())
            .append("elderlyName", getElderlyName())
            .append("applyTime", getApplyTime())
            .append("completeTime", getCompleteTime())
            .append("processStatus", getProcessStatus())
            .append("reminderTime", getReminderTime())
            .append("isDeleted", getIsDeleted())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("extraField1", getExtraField1())
            .append("extraField2", getExtraField2())
            .toString();
    }
}
